# -*- coding:utf-8 -*-

# @Time    : 2023/10/13 17:13
# @Author  : jinyuhao
# @Email   : jinyuhao@lingxi.ai
# @Software: LLM_internal



# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

from agent.llm_agent import LLMAgent

default_template = """
角色：你是泰康的客服经理，场景是向一位用户致电。
任务：结合当前流程、当前话术分析你和用户的对话记录，判断当前是否需要转接给人工，或是否需要挂机。

需要挂机的情况包括：
1. 当前流程为"向用户说结束语"并且"当前话术"明确表示要挂机时。

需要转人的情况包括：
1. - 用户明确说要去找人工客服
   - AI回复自己是AI、人工智能、虚拟的、机器人、智能助理：比如你说"作为一个人工智能"

注意：
- 除了以上需要转人的情况之外，其他情况都不需要转人。
- 除了以上需要挂机的情况之外，其他情况都不需要挂机。
- 如果不需要转人也不需要挂机，就输出"无操作"

**当前流程**：
```{current_process}```
**当前话术**：
```{result}```
**对话记录**：
```{conversation_history}```

现在你需要判断当前是否需要转接给人工，或是否需要挂机。仅选择(挂机，转人，无操作)中的一个操作是：
"""

default_template1 = """
角色：你是泰康的客服经理，场景是向一位用户致电，目标是识别用户是否有参观意向和是否有支付能力（用户月收入五千元以上或有固定资产则认为有支付能力）
任务：结合当前流程分析你和用户的对话记录，判断当前是否需要转接给人工，或是否需要挂机。

需要挂机的情况包括：
1. 消极的情绪态度：
    - 抱怨、不满、不爽、不高兴
    - 投诉、谩骂、情绪激动
    - 怀疑诈骗、担心诈骗、怀疑有人冒充客服
    - 不耐烦

2. 其他：
    - 用户累计有两次拒绝态度
    - 用户强烈拒绝一次。如用户说"不需要不需要"
    - 用户年龄在30岁以下
    - 经济能力确认欠佳（月收入低于五千元且无固定资产）

需要转人的情况包括：
1. - 用户说要去找人工客服
   - AI回复自己是AI、人工智能、虚拟的、机器人、智能助理：比如你说"作为一个人工智能"

注意：
- 除了以上需要转人的情况之外，其他情况都不需要转人。
- 只要符合以上一种情况就转人

**当前流程**：
```{current_process}```

**对话记录**：
```{conversation_history}```

输出格式：
json格式，包含以下字段：
analysis：详细分析步骤，根据上面每种转人或挂机情况一步步思考，分析字数限制在140字以内
transfer_reason：转人原因或挂机原因，如果不转人也不挂机，该字段为空；如果有多个原因用"；"分割
transfer_flag：是否需要转人，true或false
hangup_flag：是否需要挂机，true或false
"""
class TransferHangup(LLMAgent):
    """用户问题及疑议判断机器人"""

    def __init__(self, role, conversation_history, current_process, result):

        self.prompt = default_template.format(role=role, conversation_history=conversation_history, current_process=current_process, result=result)
        super().__init__(self.prompt)

if __name__ == '__main__':
    # test = """"你这是哪里的？
    # 哦，不需要了哈。
    # 我也快五十了。
    # 姓名啊。
    # 嗯，
    # 我听不明白你在说什么。
    # 嗯，我我最近没时间不去了解哈。
    # 谢谢。
    # 哦，零过去过去参观是没有时间的啊。
    # 这个听了没过去，了解也没用啊，听了一次忘记了。
    # 谢谢谢谢，嗯，拜拜。"""
    # splitlines = test.splitlines()
    # for string in splitlines:
    #     print(string)

    data = [{'role': 'assistant', 'content': '喂，您好，我这边是泰康高品质养老社区体验官，给您来电是想邀请您和家人来参观咱们泰康的高品质养老社区，提前为养老做规划！耽误您2分钟简单给您做个介绍好吧？'},
     {'role': 'user', 'content': '嗯，养老那个我，我不不养老。'}, {'role': 'assistant',
                                                     'content': '您先别着急拒绝我嘛，不是让您现在就住，就是现在有免费参观活动，泰康养老社区是采用医养融合，活力养老的方式，社区有自己的医院，和各种娱乐设施兴趣班，让我们的养老生活丰富多彩，平均寿命能长8-10岁。我给您发个邀请函，您什么时候来都可以，我听您声音还年轻的，冒昧问下您今年多大了啊？'},
     {'role': 'user', 'content': '呃，我四十多岁了。'}, {'role': 'assistant',
                                                'content': '您四十多岁正是规划养老的好时机。我们泰康养老社区不仅提供舒适的居住环境和医疗保障，还有各种活动和兴趣班，让您提前感受养老生活，扩大交际圈子。请问您是否愿意前来参观并了解更多详情？另外，冒昧问下您贵姓？'},
     {'role': 'user', 'content': '我现我姓黄。'}, {'role': 'assistant',
                                             'content': '黄先生，很高兴认识您。我们期待您的到来，一睹泰康养老社区的风采，为自己以后的养老生活有更多的了解和规划。您愿意接受我们的参观邀请吗？同时，您现在考虑养老社区是为了自己还是为了家人呢？'},
     {'role': 'user', 'content': '我还是不了解了，我暂时还没有想'}, {'role': 'assistant',
                                                      'content': '黄先生，我了解您现在可能对养老的问题并不太关心或者说还没有考虑过，这是很正常的。但实际上，提前规划养老，会让我们的晚年生活更加美好。当您有空闲时间的时候，我会再向您介绍一下泰康养老社区的情况，您看怎么样？另外，如果您或您的家人有考虑入住养老社区的需求，咱们有多种房型可供选择，基础一居6千多，温馨一室一厅1万多，您主要考虑哪种呢？'},
     {'role': 'user', 'content': '我还是不考虑，钱还没有剩下来呢。'}, {'role': 'assistant',
                                                       'content': '黄先生，我理解您现在可能对养老社区的费用有所担忧。但实际上，我们泰康养老社区有多种房型和费用选择，能够满足不同家庭的需求。如果您需要的话，我可以为您做一份详细的费用预算，让您更清楚这方面的情况。另外，我们提供免费参观活动，现场感受下可能会对您有所帮助。您觉得这样可以吗？transfer_hangup:挂机'},
     {'role': 'user', 'content': '一万块'}, {'role': 'assistant',
                                          'content': '黄先生，一万块是温馨一室一厅的费用，我们为了满足不同人的需求，还有更多的房型和支付方式，例如分期付款、长期租赁等，以适应不同家庭的经济条件。另外，如果您对年金保险有兴趣，我们也有相关产品，可以保障您的养老生活。如有需要，我们可以详细为您解读一下。同时，我们提供免费参观活动，您可以亲自来体验一下，了解我们的环境和服务。您是否愿意参观一下呢？transfer_hangup:挂机'},
     {'role': 'user', 'content': '我我我还是先考虑下。'}, {'role': 'assistant',
                                                 'content': '这样，我给您发个咱们免费参观的邀请函，您查收下，您有空的时候去看下，到时候会有咱们养老顾问联系您给您专业讲解，先不打扰您了，祝您生活愉快，再见。transfer_hangup:挂机'},
     {'role': 'user', 'content': '嗯，再见。'},
     {'role': 'assistant', 'content': '那这边先不打扰您了，感谢您对泰康的支持和信任，祝您生活愉快，再见！transfer_hangup:挂机'},
     {'role': 'user', 'content': '我我我还是先考虑下。'},
     {'role': 'assistant', 'content': '好的，那先不打扰您了，下次再联系，祝您生活愉快，再见！transfer_hangup:挂机'},
     {'role': 'user', 'content': '嗯，再见。'}]
    content_list = [i['content'] for i in data]
    content_str = '\n'.join(content_list)
    print(content_str)